local upval = 1
local upval2 = 2
function test()  --test是aaa的外层函数，因此test函数的upvalue也包括了，upval、upval2
	local locvar = 3
	print(upval) --test函数引用到upval，即upval是test的一个upvalue

	local function aaa()
		print(upval + upval2 + locvar)
	end
	aaa()  --aaa函数的upvalue值有 upval + upval2 + locvar
end
--带upvalue的函数就是closure（实际上每个lua函数都至少包含一个upvalue）
--lua一共有3种函数，分别是light c function、c closure和lua closure